1. Field of the Invention
The invention generally relates to network communications, and, in particular, to handling data packets that are reordered in a network.
2. Description of the Related Art
The design of error and congestion control mechanisms in Transmission Control Protocol (TCP) is generally based on the premise that packet loss is an indication of network congestion. Upon detecting loss of data packet(s), a TCP sender backs off its transmission rate by decreasing its congestion window. TCP uses two strategies for detecting packet loss. The first one is based on the sender's retransmission time-out (RTO) expiring and is sometimes referred to as “coarse time-out.” When the sender times out, congestion control responds by causing the sender to enter slow-start, thereby drastically decreasing its congestion window to one segment. The other loss detection mechanism originates at the receiver and uses TCP's sequence number. Essentially, the receiver observes the sequence numbers of packets it receives, and a “hole” in the sequence is considered indicative of a packet loss. The receiver generates a “duplicate acknowledgment” (or DUPACK) for every “out-of-order” packet it receives. Until the missing packet is received, each received data packet with a higher sequence number is considered to be “out-of-order,” and will cause a DUPACK to be generated. The transmission of DUPACK(s) is described in Request for Comments (RFC) 2581, entitled “TCP Congestion Control,” dated April, 1999.
Packet reordering is generally attributed to transient conditions, pathological behavior, and erroneous implementations. For example, oscillations or “route flaps” among routes with different round-trip times (RTTs) are a common cause of out-of-order packets. Another cause of packet reordering can be network routers that provide parallel paths for data packets associated with a same connection. That is, for performance reasons, network routers may transmit incoming data packets over parallel (or alternative) paths to a destination, even though the data packets are associated with the same connection. Thus, the data packets can arrive at their intended destination out of order. One example of a router that can cause packet reordering is Etherchannel® provided by Cisco®.
To improve network performance in the event packet reordering occurs, some TCP implementations have adopted a “fast retransmit” algorithm that infers that a packet has been lost after the sender receives a few DUPACKs. The sender then retransmits the lost packet without waiting for a time-out and reduces its congestion window in half. The “fast retransmit” algorithm is generally intended to improve TCP's throughput by avoiding the sender to time-out (which results in slow-start and consequently the shutting down of the congestion window to one).
Fast retransmit can improve TCP's performance in the presence of sporadic reordering. However, it still operates under the assumption that out-of-order packets indicate packet loss, and therefore congestion, even though no actual loss may have occurred. Consequently, the network performance degrades considerably in the presence of persistent reordering because the repeated false fast retransmits can keep the sender's congestion window relatively small.
The present invention is directed to addressing, or at least reducing, the effects of, one or more of the problems set forth above.